| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- import { paths } from 'api-types'
- import { NextApiRequest, NextApiResponse } from 'next'
- import apiWrapper from '@/lib/api/apiWrapper'
- import { getSnippets } from '@/lib/api/snippets.utils'
- const wrappedHandler = (req: NextApiRequest, res: NextApiResponse) => apiWrapper(req, res, handler)
- async function handler(req: NextApiRequest, res: NextApiResponse) {
- const { method } = req
- switch (method) {
- case 'GET':
- return handleGetAll(req, res)
- default:
- res.setHeader('Allow', ['GET'])
- res.status(405).json({ data: null, error: { message: `Method ${method} Not Allowed` } })
- }
- }
- type GetRequestData = paths['/platform/projects/{ref}/content/count']['get']['parameters']['query']
- const handleGetAll = async (req: NextApiRequest, res: NextApiResponse) => {
- const params = req.query as GetRequestData
- try {
- const { snippets } = await getSnippets({
- searchTerm: params?.name,
- })
- if (params?.name) {
- return res.status(200).json({
- count: snippets.length,
- })
- } else {
- return res.status(200).json({
- shared: snippets.filter((s) => s.visibility === 'project').length,
- favorites: snippets.filter((s) => s.favorite).length,
- private: snippets.filter((s) => s.visibility === 'user').length,
- })
- }
- } catch (error: any) {
- console.error('Error fetching snippets:', error)
- return res.status(500).json({ message: error?.message ?? 'Failed to get count' })
- }
- }
- export default wrappedHandler
|